Add Zenodo DOI auto-minting config for GitHub Releases#321
Merged
Conversation
Enables Zenodo to mint a concept DOI + per-version DOI on every future GitHub Release. Zenodo's GitHub App reads `.zenodo.json` at the tagged commit and publishes a software record. Changes: - `.zenodo.json` (new): upload_type=software, MIT license, creators block (Gerber, Isaac; ORCID 0009-0009-3275-5591), related_identifiers linking to the GitHub source (isSupplementTo) and ReadTheDocs (isDocumentedBy). - `LICENSE` (new): standard MIT text with single-holder copyright. - `CITATION.cff`: version 3.1.1 -> 3.1.2, date-released updated to the v3.1.2 release date. - `pyproject.toml`: add `LICENSE` to `[tool.maturin].include` so it lands in the sdist tarball (not only in PKG-INFO's License-File metadata). Manual one-time setup (done out-of-band): Zenodo account linked to GitHub, the igerber/diff-diff repo toggled ON at https://zenodo.org/account/settings/github/. The next release tag after v3.1.2 will trigger the Zenodo webhook and mint DOIs. A follow-up PR will add the concept-DOI badge to README and a `doi:` field to CITATION.cff once the first DOI has been minted. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Overall assessment ✅ Looks good. No unmitigated P0/P1 findings in the changed scope. Findings
Executive summary
Methodology
Code Quality
Performance
Maintainability
Tech Debt
Security
Documentation/Tests
Open questions / assumptions
|
igerber
added a commit
that referenced
this pull request
Apr 18, 2026
…odo config Packages five merged PRs since v3.1.2 as patch release 3.1.3: - #311 Replicate-weight variance and PSU-level bootstrap for dCDH — new variance_method="replicate" (BRR / Fay / JK1 / JKn / SDR) and PSU-level multiplier bootstrap, with df-aware inference and group-level PSU map. - #321 Zenodo DOI auto-minting config — .zenodo.json + top-level LICENSE so the next GitHub Release mints a concept + versioned DOI automatically. - #319 Silent sparse->dense lstsq fallback signaling in ImputationDiD and TwoStageDiD — emits ConvergenceWarning instead of switching paths silently. - #317 Non-convergence signaling in TROP alternating-minimization solvers, including LOOCV and bootstrap aggregation. Top-level warning aggregation. - #320 /bump-version skill now updates CITATION.cff; single RELEASE_DATE resolved upfront and threaded through all date-bearing files. Version strings bumped in diff_diff/__init__.py, pyproject.toml, rust/Cargo.toml, diff_diff/guides/llms-full.txt, and CITATION.cff (version: 3.1.3, date-released: 2026-04-18). CHANGELOG populated with Added / Fixed / Changed sections and comparison-link footer. Per project SemVer convention, minor bumps are reserved for new estimators or new module-level API; additive extensions to existing estimators (like PR #311's new variance_method values) are patch-level. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.zenodo.jsonat repo root so Zenodo's GitHub App can mint a concept DOI + per-version DOI on every future release. Metadata:upload_type=software, MIT license, ORCID-tagged creator, related identifiers linking the record to the GitHub source (isSupplementTo) and ReadTheDocs (isDocumentedBy).LICENSE(standard MIT, single-holder copyright) — the repo declared MIT inpyproject.tomlandCITATION.cffbut had no LICENSE file.CITATION.cfffrom 3.1.1 to 3.1.2 (matching the shipped release) and updatedate-released.[tool.maturin].includeto coverLICENSEso the file lands in the sdist tarball, not just inPKG-INFO'sLicense-File:metadata.One-time Zenodo setup (done out-of-band, not part of this PR):
igerber/diff-difftoggled ON at https://zenodo.org/account/settings/github/. The first release tag afterv3.1.2will fire the Zenodo webhook.Methodology references
Validation
.zenodo.jsonparses as valid JSON; enums (upload_type,access_right,license,relation) spot-checked against https://developers.zenodo.org/#deposit-metadata.maturin sdistruns clean, no license-file warnings, and the produced tarball containsLICENSEat its root plusLicense-File: LICENSEinPKG-INFO.Security / privacy
Follow-up (out of scope here)
doi:line toCITATION.cff.Generated with Claude Code